/*
 * Copyright (C) 2006-2012 TongYan Corporation
 * All rights reserved.
 *
 * @brief info:
 *
 * @author: 王哲成 - wangzhecheng@yeah.net
 * @date: 2021.05.21
 * @last modified: 2021-05-21 10:26
 *
 */

#ifndef __MATRIX_HEADER__
#define __MATRIX_HEADER__

#define _USE_MATH_DEFINES

/* #include "../dependencies/eigen/Eigen/Dense" */
/* #include "../dependencies/eigen/Eigen/Eigenvalues" */
#include <Eigen/Dense>
#include <math.h>

using Vector = Eigen::VectorXd;
using Matrix = Eigen::MatrixXd;
using Candidate = std::pair<Vector, double>;
template <int n> using Coord = Eigen::Matrix<double, n, 1>;

/* const value related{{{*/

constexpr double rad_to_deg = static_cast<double>(180. / M_PI);
constexpr double deg_to_rad = static_cast<double>(M_PI / 180.);
constexpr double r_5 = 0.5;
constexpr double r_25 = 0.25;
constexpr double r0 = 0;
constexpr double r1 = 1;
constexpr double r2 = 2;
/* constexpr double GEOXFEM_LARGE_FLOAT = FLT_MAX; */
/* constexpr double GEOXFEM_SMALL_FLOAT = FLT_MIN; */
/* constexpr double GEOXFEM_MATH_TOL    = static_cast<double>(1e-4); */
/* constexpr int    GEOXFEM_NOT_GIVEN   = INT32_MAX; */
/*}}}*/
#endif
